<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Chapter 12 Bio.PopGen: Population genetics &mdash; Biopython_en 1.0 documentation</title>
    
    <link rel="stylesheet" href="_static/default.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    './',
        VERSION:     '1.0',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="top" title="Biopython_en 1.0 documentation" href="index.html" />
    <link rel="next" title="Chapter 13 Phylogenetics with Bio.Phylo" href="chr13.html" />
    <link rel="prev" title="Chapter 11 Going 3D: The PDB module" href="chr11.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="chr13.html" title="Chapter 13 Phylogenetics with Bio.Phylo"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="chr11.html" title="Chapter 11 Going 3D: The PDB module"
             accesskey="P">previous</a> |</li>
        <li><a href="index.html">Biopython_en 1.0 documentation</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="chapter-12-bio-popgen-population-genetics">
<h1>Chapter 12  Bio.PopGen: Population genetics<a class="headerlink" href="#chapter-12-bio-popgen-population-genetics" title="Permalink to this headline">¶</a></h1>
<p>Bio.PopGen is a Biopython module supporting population genetics,
available in Biopython 1.44 onwards.</p>
<p>The medium term objective for the module is to support widely used data
formats, applications and databases. This module is currently under
intense development and support for new features should appear at a
rather fast pace. Unfortunately this might also entail some instability
on the API, especially if you are using a development version. APIs that
are made available on our official public releases should be much more
stable.</p>
<div class="section" id="genepop">
<h2>12.1  GenePop<a class="headerlink" href="#genepop" title="Permalink to this headline">¶</a></h2>
<p>GenePop
(<tt class="docutils literal"><span class="pre">`http://genepop.curtin.edu.au/</span></tt> &lt;<a class="reference external" href="http://genepop.curtin.edu.au/">http://genepop.curtin.edu.au/</a>&gt;`__)
is a popular population genetics software package supporting
Hardy-Weinberg tests, linkage desiquilibrium, population diferentiation,
basic statistics, <em>F</em><sub>*st*</sub> and migration estimates, among
others. GenePop does not supply sequence based statistics as it doesn’t
handle sequence data. The GenePop file format is supported by a wide
range of other population genetic software applications, thus making it
a relevant format in the population genetics field.</p>
<p>Bio.PopGen provides a parser and generator of GenePop file format.
Utilities to manipulate the content of a record are also provided. Here
is an example on how to read a GenePop file (you can find example
GenePop data files in the Test/PopGen directory of Biopython):</p>
<p>This will read a file called example.gen and parse it. If you do print
rec, the record will be output again, in GenePop format.</p>
<p>The most important information in rec will be the loci names and
population information (but there is more – use help(GenePop.Record) to
check the API documentation). Loci names can be found on rec.loci_list.
Population information can be found on rec.populations. Populations is a
list with one element per population. Each element is itself a list of
individuals, each individual is a pair composed by individual name and a
list of alleles (2 per marker), here is an example for rec.populations:</p>
<p>So we have two populations, the first with two individuals, the second
with only one. The first individual of the first population is called
Ind1, allelic information for each of the 3 loci follows. Please note
that for any locus, information might be missing (see as an example,
Ind2 above).</p>
<p>A few utility functions to manipulate GenePop records are made
available, here is an example:</p>
<p>GenePop does not support population names, a limitation which can be
cumbersome at times. Functionality to enable population names is
currently being planned for Biopython. These extensions won’t break
compatibility in any way with the standard format. In the medium term,
we would also like to support the GenePop web service.</p>
</div>
<div class="section" id="coalescent-simulation">
<h2>12.2  Coalescent simulation<a class="headerlink" href="#coalescent-simulation" title="Permalink to this headline">¶</a></h2>
<p>A coalescent simulation is a backward model of population genetics with
relation to time. A simulation of ancestry is done until the Most Recent
Common Ancestor (MRCA) is found. This ancestry relationship starting on
the MRCA and ending on the current generation sample is sometimes called
a genealogy. Simple cases assume a population of constant size in time,
haploidy, no population structure, and simulate the alleles of a single
locus under no selection pressure.</p>
<p>Coalescent theory is used in many fields like selection detection,
estimation of demographic parameters of real populations or disease gene
mapping.</p>
<p>The strategy followed in the Biopython implementation of the coalescent
was not to create a new, built-in, simulator from scratch but to use an
existing one, SIMCOAL2
(<tt class="docutils literal"><span class="pre">`http://cmpg.unibe.ch/software/simcoal2/</span></tt> &lt;<a class="reference external" href="http://cmpg.unibe.ch/software/simcoal2/">http://cmpg.unibe.ch/software/simcoal2/</a>&gt;`__).
SIMCOAL2 allows for, among others, population structure, multiple
demographic events, simulation of multiple types of loci (SNPs,
sequences, STRs/microsatellites and RFLPs) with recombination, diploidy
multiple chromosomes or ascertainment bias. Notably SIMCOAL2 doesn’t
support any selection model. We recommend reading SIMCOAL2’s
documentation, available in the link above.</p>
<p>The input for SIMCOAL2 is a file specifying the desired demography and
genome, the output is a set of files (typically around 1000) with the
simulated genomes of a sample of individuals per subpopulation. This set
of files can be used in many ways, like to compute confidence intervals
where which certain statistics (e.g., <em>F</em><sub>*st*</sub> or Tajima D) are
expected to lie. Real population genetics datasets statistics can then
be compared to those confidence intervals.</p>
<p>Biopython coalescent code allows to create demographic scenarios and
genomes and to run SIMCOAL2.</p>
<div class="section" id="creating-scenarios">
<h3>12.2.1  Creating scenarios<a class="headerlink" href="#creating-scenarios" title="Permalink to this headline">¶</a></h3>
<p>Creating a scenario involves both creating a demography and a chromosome
structure. In many cases (e.g. when doing Approximate Bayesian
Computations – ABC) it is important to test many parameter variations
(e.g. vary the effective population size, <em>N</em><sub>*e*</sub>, between 10,
50, 500 and 1000 individuals). The code provided allows for the
simulation of scenarios with different demographic parameters very
easily.</p>
<p>Below we see how we can create scenarios and then how simulate them.</p>
<div class="section" id="demography">
<h4>12.2.1.1  Demography<a class="headerlink" href="#demography" title="Permalink to this headline">¶</a></h4>
<p>A few predefined demographies are built-in, all have two shared
parameters: sample size (called sample_size on the template, see below
for its use) per deme and deme size, i.e. subpopulation size
(pop_size). All demographies are available as templates where all
parameters can be varied, each template has a system name. The
prefedined demographies/templates are:</p>
<blockquote>
<div><dl class="docutils">
<dt><strong>Single population, constant size</strong></dt>
<dd>The standard parameters are enough to specify it. Template name:
simple.</dd>
</dl>
</div></blockquote>
<dl class="docutils">
<dt><strong>Single population, bottleneck</strong></dt>
<dd>As seen on figure <a class="reference external" href="#fig:bottle">12.2.1.1</a>. The parameters are
current population size (pop_size on template ne3 on figure), time
of expansion, given as the generation in the past when it occurred
(expand_gen), effective population size during bottleneck (ne2),
time of contraction (contract_gen) and original size in the remote
past (ne3). Template name: bottle.</dd>
<dt><strong>Island model</strong></dt>
<dd>The typical island model. The total number of demes is specified by
total_demes and the migration rate by mig. Template name island.</dd>
<dt><strong>Stepping stone model - 1 dimension</strong></dt>
<dd>The stepping stone model in 1 dimension, extremes disconnected. The
total number of demes is total_demes, migration rate is mig.
Template name is ssm_1d.</dd>
<dt><strong>Stepping stone model - 2 dimensions</strong></dt>
<dd>The stepping stone model in 2 dimensions, extremes disconnected. The
parameters are x for the horizontal dimension and y for the vertical
(being the total number of demes x times y), migration rate is mig.
Template name is ssm_2d.</dd>
</dl>
<p><a href="#id1"><span class="problematic" id="id2">|image4|</span></a></p>
<p>In our first example, we will generate a template for a single
population, constant size model with a sample size of 30 and a deme size
of 500. The code for this is:</p>
<p>Executing this code snippet will generate a file on the current
directory called simple_100_300.par this file can be given as input to
SIMCOAL2 to simulate the demography (below we will see how Biopython can
take care of calling SIMCOAL2).</p>
<p>This code consists of a single function call, let’s discuss it parameter
by parameter.</p>
<p>The first parameter is the template id (from the list above). We are
using the id ’simple’ which is the template for a single population of
constant size along time.</p>
<p>The second parameter is the chromosome structure. Please ignore it for
now, it will be explained in the next section.</p>
<p>The third parameter is a list of all required parameters (recall that
the simple model only needs sample_size and pop_size) and possible
values (in this case each parameter only has a possible value).</p>
<p>Now, let’s consider an example where we want to generate several island
models, and we are interested in varying the number of demes: 10, 50 and
100 with a migration rate of 1%. Sample size and deme size will be the
same as before. Here is the code:</p>
<p>In this case, 3 files will be generated: island_100_0.01_100_30.par,
island_10_0.01_100_30.par and island_50_0.01_100_30.par. Notice
the rule to make file names: template name, followed by parameter values
in reverse order.</p>
<p>A few, arguably more esoteric template demographies exist (please check
the Bio/PopGen/SimCoal/data directory on Biopython source tree).
Furthermore it is possible for the user to create new templates. That
functionality will be discussed in a future version of this document.</p>
</div>
<div class="section" id="chromosome-structure">
<h4>12.2.1.2  Chromosome structure<a class="headerlink" href="#chromosome-structure" title="Permalink to this headline">¶</a></h4>
<p>We strongly recommend reading SIMCOAL2 documentation to understand the
full potential available in modeling chromosome structures. In this
subsection we only discuss how to implement chromosome structures using
the Biopython interface, not the underlying SIMCOAL2 capabilities.</p>
<p>We will start by implementing a single chromosome, with 24 SNPs with a
recombination rate immediately on the right of each locus of 0.0005 and
a minimum frequency of the minor allele of 0. This will be specified by
the following list (to be passed as second parameter to the function
generate_simcoal_from_template):</p>
<p>This is actually the chromosome structure used in the above examples.</p>
<p>The chromosome structure is represented by a list of chromosomes, each
chromosome (i.e., each element in the list) is composed by a tuple (a
pair): the first element is the number of times the chromosome is to be
repeated (as there might be interest in repeating the same chromosome
many times). The second element is a list of the actual components of
the chromosome. Each element is again a pair, the first member is the
locus type and the second element the parameters for that locus type.
Confused? Before showing more examples let’s review the example above:
We have a list with one element (thus one chromosome), the chromosome is
a single instance (therefore not to be repeated), it is composed of 24
SNPs, with a recombination rate of 0.0005 between each consecutive SNP,
the minimum frequency of the minor allele is 0.0 (i.e, it can be absent
from a certain population).</p>
<p>Let’s see a more complicated example:</p>
<p>We start by having 5 chromosomes with the same structure as above (i.e.,
24 SNPs). We then have 2 chromosomes which have a DNA sequence with 10
nucleotides, 0.0 recombination rate, 0.0005 mutation rate, and a
transition rate of 0.33. Then we have an RFLP with 0.0 recombination
rate to the next locus and a 0.0001 mutation rate. Finally we have a
microsatellite (or STR), with 0.0 recombination rate to the next locus
(note, that as this is a single microsatellite which has no loci
following, this recombination rate here is irrelevant), with a mutation
rate of 0.001, geometric parameter of 0.0 and a range constraint of 0.0
(for information about this parameters please consult the SIMCOAL2
documentation, you can use them to simulate various mutation models,
including the typical – for microsatellites – stepwise mutation model
among others).</p>
</div>
</div>
<div class="section" id="running-simcoal2">
<h3>12.2.2  Running SIMCOAL2<a class="headerlink" href="#running-simcoal2" title="Permalink to this headline">¶</a></h3>
<p>We now discuss how to run SIMCOAL2 from inside Biopython. It is required
that the binary for SIMCOAL2 is called simcoal2 (or simcoal2.exe on
Windows based platforms), please note that the typical name when
downloading the program is in the format simcoal2_x_y. As such, when
installing SIMCOAL2 you will need to rename of the downloaded executable
so that Biopython can find it.</p>
<p>It is possible to run SIMCOAL2 on files that were not generated using
the method above (e.g., writing a parameter file by hand), but we will
show an example by creating a model using the framework presented above.</p>
<p>The lines of interest are the last two (plus the new import). Firstly a
controller for the application is created. The directory where the
binary is located has to be specified.</p>
<p>The simulator is then run on the last line: we know, from the rules
explained above, that the input file name is simple_100_30.par for the
simulation parameter file created. We then specify that we want to run
50 independent simulations, by default Biopython requests a simulation
of diploid data, but a third parameter can be added to simulate haploid
data (adding as a parameter the string ’0’). SIMCOAL2 will now run
(please note that this can take quite a lot of time) and will create a
directory with the simulation results. The results can now be analysed
(typically studying the data with Arlequin3). In the future Biopython
might support reading the Arlequin3 format and thus allowing for the
analysis of SIMCOAL2 data inside Biopython.</p>
</div>
</div>
<div class="section" id="other-applications">
<h2>12.3  Other applications<a class="headerlink" href="#other-applications" title="Permalink to this headline">¶</a></h2>
<p>Here we discuss interfaces and utilities to deal with population
genetics’ applications which arguably have a smaller user base.</p>
<div class="section" id="fdist-detecting-selection-and-molecular-adaptation">
<h3>12.3.1  FDist: Detecting selection and molecular adaptation<a class="headerlink" href="#fdist-detecting-selection-and-molecular-adaptation" title="Permalink to this headline">¶</a></h3>
<p>FDist is a selection detection application suite based on computing
(i.e. simulating) a “neutral” confidence interval based on
<em>F</em><sub>*st*</sub> and heterozygosity. Markers (which can be SNPs,
microsatellites, AFLPs among others) which lie outside the “neutral”
interval are to be considered as possible candidates for being under
selection.</p>
<p>FDist is mainly used when the number of markers is considered enough to
estimate an average <em>F</em><sub>*st*</sub>, but not enough to either have
outliers calculated from the dataset directly or, with even more markers
for which the relative positions in the genome are known, to use
approaches based on, e.g., Extended Haplotype Heterozygosity (EHH).</p>
<p>The typical usage pattern for FDist is as follows:</p>
<ol class="arabic simple">
<li>Import a dataset from an external format into FDist format.</li>
<li>Compute average <em>F</em><sub>*st*</sub>. This is done by datacal inside
FDist.</li>
<li>Simulate “neutral” markers based on the average <em>F</em><sub>*st*</sub> and
expected number of total populations. This is the core operation,
done by fdist inside FDist.</li>
<li>Calculate the confidence interval, based on the desired confidence
boundaries (typically 95% or 99%). This is done by cplot and is
mainly used to plot the interval.</li>
<li>Assess each marker status against the simulation “neutral” confidence
interval. Done by pv. This is used to detect the outlier status of
each marker against the simulation.</li>
</ol>
<p>We will now discuss each step with illustrating example code (for this
example to work FDist binaries have to be on the executable PATH).</p>
<p>The FDist data format is application specific and is not used at all by
other applications, as such you will probably have to convert your data
for use with FDist. Biopython can help you do this. Here is an example
converting from GenePop format to FDist format (along with imports that
will be needed on examples further below):</p>
<p>In this code we simply parse a GenePop file and convert it to a FDist
record.</p>
<p>Printing an FDist record will generate a string that can be directly
saved to a file and supplied to FDist. FDist requires the input file to
be called infile, therefore we save the record on a file with that name.</p>
<p>The most important fields on a FDist record are: num_pops, the number
of populations; num_loci, the number of loci and loci_data with the
marker data itself. Most probably the details of the record are of no
interest to the user, as the record only purpose is to be passed to
FDist.</p>
<p>The next step is to calculate the average <em>F</em><sub>*st*</sub> of the
dataset (along with the sample size):</p>
<p>On the first line we create an object to control the call of FDist
suite, this object will be used further on in order to call other suite
applications.</p>
<p>On the second line we call the datacal application which computes the
average <em>F</em><sub>*st*</sub> and the sample size. It is worth noting that
the <em>F</em><sub>*st*</sub> computed by datacal is a <em>variation</em> of Weir and
Cockerham’s θ.</p>
<p>We can now call the main fdist application in order to simulate neutral
markers.</p>
<dl class="docutils">
<dt><strong>nsamples</strong></dt>
<dd>Number of populations sampled, has to be lower than npops.</dd>
<dt><strong>fst</strong></dt>
<dd>Average <em>F</em><sub>*st*</sub>.</dd>
<dt><strong>sample_size</strong></dt>
<dd>Average number of individuals sampled on each population.</dd>
<dt><strong>mut</strong></dt>
<dd>Mutation model: 0 - Infinite alleles; 1 - Stepwise mutations</dd>
<dt><strong>num_sims</strong></dt>
<dd>Number of simulations to perform. Typically a number around 40000
will be OK, but if you get a confidence interval that looks sharp
(this can be detected when plotting the confidence interval computed
below) the value can be increased (a suggestion would be steps of
10000 simulations).</dd>
</dl>
<p>The confusion in wording between number of samples and sample size stems
from the original application.</p>
<p>A file named out.dat will be created with the simulated heterozygosities
and <em>F</em><sub>*st*</sub>s, it will have as many lines as the number of
simulations requested.</p>
<p>Note that fdist returns the average <em>F</em><sub>*st*</sub> that it was
<em>capable</em> of simulating, for more details about this issue please read
below the paragraph on approximating the desired average
<em>F</em><sub>*st*</sub>.</p>
<p>The next (optional) step is to calculate the confidence interval:</p>
<p>You can only call cplot after having run fdist.</p>
<p>This will calculate the confidence intervals (99% in this case) for a
previous fdist run. A list of quadruples is returned. The first element
represents the heterozygosity, the second the lower bound of
<em>F</em><sub>*st*</sub> confidence interval for that heterozygosity, the third
the average and the fourth the upper bound. This can be used to trace
the confidence interval contour. This list is also written to a file,
out.cpl.</p>
<p>The main purpose of this step is return a set of points which can be
easily used to plot a confidence interval. It can be skipped if the
objective is only to assess the status of each marker against the
simulation, which is the next step...</p>
<p>You can only call cplot after having run datacal and fdist.</p>
<p>This will use the simulated markers to assess the status of each
individual real marker. A list, in the same order than the loci_list
that is on the FDist record (which is in the same order that the GenePop
record) is returned. Each element in the list is a quadruple, the
fundamental member of each quadruple is the last element (regarding the
other elements, please refer to the pv documentation – for the sake of
simplicity we will not discuss them here) which returns the probability
of the simulated <em>F</em><sub>*st*</sub> being lower than the marker
<em>F</em><sub>*st*</sub>. Higher values would indicate a stronger candidate for
positive selection, lower values a candidate for balancing selection,
and intermediate values a possible neutral marker. What is “higher”,
“lower” or “intermediate” is really a subjective issue, but taking a
“confidence interval” approach and considering a 95% confidence
interval, “higher” would be between 0.95 and 1.0, “lower” between 0.0
and 0.05 and “intermediate” between 0.05 and 0.95.</p>
<div class="section" id="approximating-the-desired-average-f-st">
<h4>12.3.1.1  Approximating the desired average <em>F</em><sub>*st*</sub><a class="headerlink" href="#approximating-the-desired-average-f-st" title="Permalink to this headline">¶</a></h4>
<p>Fdist tries to approximate the desired average <em>F</em><sub>*st*</sub> by doing
a coalescent simulation using migration rates based on the formula</p>
<p><em>N</em><sub>*m*</sub> =</p>
<table border="1" class="docutils">
<colgroup>
<col width="100%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td>1 − <em>F</em><sub>*st*</sub></td>
</tr>
<tr class="row-even"><td>&nbsp;</td>
</tr>
<tr class="row-odd"><td>4<em>F</em><sub>*st*</sub></td>
</tr>
</tbody>
</table>
<p>This formula assumes a few premises like an infinite number of
populations.</p>
<p>In practice, when the number of populations is low, the mutation model
is stepwise and the sample size increases, fdist will not be able to
simulate an acceptable approximate average <em>F</em><sub>*st*</sub>.</p>
<p>To address that, a function is provided to iteratively approach the
desired value by running several fdists in sequence. This approach is
computationally more intensive than running a single fdist run, but
yields good results. The following code runs fdist approximating the
desired <em>F</em><sub>*st*</sub>:</p>
<p>The only new optional parameter, when comparing with run_fdist, is
limit which is the desired maximum error. run_fdist can (and probably
should) be safely replaced with run_fdist_force_fst.</p>
</div>
<div class="section" id="final-notes">
<h4>12.3.1.2  Final notes<a class="headerlink" href="#final-notes" title="Permalink to this headline">¶</a></h4>
<p>The process to determine the average <em>F</em><sub>*st*</sub> can be more
sophisticated than the one presented here. For more information we refer
you to the FDist README file. Biopython’s code can be used to implement
more sophisticated approaches.</p>
</div>
</div>
</div>
<div class="section" id="future-developments">
<h2>12.4  Future Developments<a class="headerlink" href="#future-developments" title="Permalink to this headline">¶</a></h2>
<p>The most desired future developments would be the ones you add yourself
;) .</p>
<p>That being said, already existing fully functional code is currently
being incorporated in Bio.PopGen, that code covers the applications
FDist and SimCoal2, the HapMap and UCSC Table Browser databases and some
simple statistics like <em>F</em><sub>*st*</sub>, or allele counts.</p>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Chapter 12  Bio.PopGen: Population genetics</a><ul>
<li><a class="reference internal" href="#genepop">12.1  GenePop</a></li>
<li><a class="reference internal" href="#coalescent-simulation">12.2  Coalescent simulation</a><ul>
<li><a class="reference internal" href="#creating-scenarios">12.2.1  Creating scenarios</a><ul>
<li><a class="reference internal" href="#demography">12.2.1.1  Demography</a></li>
<li><a class="reference internal" href="#chromosome-structure">12.2.1.2  Chromosome structure</a></li>
</ul>
</li>
<li><a class="reference internal" href="#running-simcoal2">12.2.2  Running SIMCOAL2</a></li>
</ul>
</li>
<li><a class="reference internal" href="#other-applications">12.3  Other applications</a><ul>
<li><a class="reference internal" href="#fdist-detecting-selection-and-molecular-adaptation">12.3.1  FDist: Detecting selection and molecular adaptation</a><ul>
<li><a class="reference internal" href="#approximating-the-desired-average-f-st">12.3.1.1  Approximating the desired average <em>F</em><sub>*st*</sub></a></li>
<li><a class="reference internal" href="#final-notes">12.3.1.2  Final notes</a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#future-developments">12.4  Future Developments</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="chr11.html"
                        title="previous chapter">Chapter 11  Going 3D: The PDB module</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="chr13.html"
                        title="next chapter">Chapter 13  Phylogenetics with Bio.Phylo</a></p>
  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="_sources/chr12.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="chr13.html" title="Chapter 13 Phylogenetics with Bio.Phylo"
             >next</a> |</li>
        <li class="right" >
          <a href="chr11.html" title="Chapter 11 Going 3D: The PDB module"
             >previous</a> |</li>
        <li><a href="index.html">Biopython_en 1.0 documentation</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2013, Biopython.
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1.
    </div>
  </body>
</html>